48 results
Contributors
-
- By Rose Teteki Abbey, K. C. Abraham, David Tuesday Adamo, LeRoy H. Aden, Efrain Agosto, Victor Aguilan, Gillian T. W. Ahlgren, Charanjit Kaur AjitSingh, Dorothy B E A Akoto, Giuseppe Alberigo, Daniel E. Albrecht, Ruth Albrecht, Daniel O. Aleshire, Urs Altermatt, Anand Amaladass, Michael Amaladoss, James N. Amanze, Lesley G. Anderson, Thomas C. Anderson, Victor Anderson, Hope S. Antone, María Pilar Aquino, Paula Arai, Victorio Araya Guillén, S. Wesley Ariarajah, Ellen T. Armour, Brett Gregory Armstrong, Atsuhiro Asano, Naim Stifan Ateek, Mahmoud Ayoub, John Alembillah Azumah, Mercedes L. García Bachmann, Irena Backus, J. Wayne Baker, Mieke Bal, Lewis V. Baldwin, William Barbieri, António Barbosa da Silva, David Basinger, Bolaji Olukemi Bateye, Oswald Bayer, Daniel H. Bays, Rosalie Beck, Nancy Elizabeth Bedford, Guy-Thomas Bedouelle, Chorbishop Seely Beggiani, Wolfgang Behringer, Christopher M. Bellitto, Byard Bennett, Harold V. Bennett, Teresa Berger, Miguel A. Bernad, Henley Bernard, Alan E. Bernstein, Jon L. Berquist, Johannes Beutler, Ana María Bidegain, Matthew P. Binkewicz, Jennifer Bird, Joseph Blenkinsopp, Dmytro Bondarenko, Paulo Bonfatti, Riet en Pim Bons-Storm, Jessica A. Boon, Marcus J. Borg, Mark Bosco, Peter C. Bouteneff, François Bovon, William D. Bowman, Paul S. Boyer, David Brakke, Richard E. Brantley, Marcus Braybrooke, Ian Breward, Ênio José da Costa Brito, Jewel Spears Brooker, Johannes Brosseder, Nicholas Canfield Read Brown, Robert F. Brown, Pamela K. Brubaker, Walter Brueggemann, Bishop Colin O. Buchanan, Stanley M. Burgess, Amy Nelson Burnett, J. Patout Burns, David B. Burrell, David Buttrick, James P. Byrd, Lavinia Byrne, Gerado Caetano, Marcos Caldas, Alkiviadis Calivas, William J. Callahan, Salvatore Calomino, Euan K. Cameron, William S. Campbell, Marcelo Ayres Camurça, Daniel F. Caner, Paul E. Capetz, Carlos F. Cardoza-Orlandi, Patrick W. Carey, Barbara Carvill, Hal Cauthron, Subhadra Mitra Channa, Mark D. Chapman, James H. Charlesworth, Kenneth R. Chase, Chen Zemin, Luciano Chianeque, Philip Chia Phin Yin, Francisca H. Chimhanda, Daniel Chiquete, John T. Chirban, Soobin Choi, Robert Choquette, Mita Choudhury, Gerald Christianson, John Chryssavgis, Sejong Chun, Esther Chung-Kim, Charles M. A. Clark, Elizabeth A. Clark, Sathianathan Clarke, Fred Cloud, John B. Cobb, W. Owen Cole, John A Coleman, John J. Collins, Sylvia Collins-Mayo, Paul K. Conkin, Beth A. Conklin, Sean Connolly, Demetrios J. Constantelos, Michael A. Conway, Paula M. Cooey, Austin Cooper, Michael L. Cooper-White, Pamela Cooper-White, L. William Countryman, Sérgio Coutinho, Pamela Couture, Shannon Craigo-Snell, James L. Crenshaw, David Crowner, Humberto Horacio Cucchetti, Lawrence S. Cunningham, Elizabeth Mason Currier, Emmanuel Cutrone, Mary L. Daniel, David D. Daniels, Robert Darden, Rolf Darge, Isaiah Dau, Jeffry C. Davis, Jane Dawson, Valentin Dedji, John W. de Gruchy, Paul DeHart, Wendy J. Deichmann Edwards, Miguel A. De La Torre, George E. Demacopoulos, Thomas de Mayo, Leah DeVun, Beatriz de Vasconcellos Dias, Dennis C. Dickerson, John M. Dillon, Luis Miguel Donatello, Igor Dorfmann-Lazarev, Susanna Drake, Jonathan A. Draper, N. Dreher Martin, Otto Dreydoppel, Angelyn Dries, A. J. Droge, Francis X. D'Sa, Marilyn Dunn, Nicole Wilkinson Duran, Rifaat Ebied, Mark J. Edwards, William H. Edwards, Leonard H. Ehrlich, Nancy L. Eiesland, Martin Elbel, J. Harold Ellens, Stephen Ellingson, Marvin M. Ellison, Robert Ellsberg, Jean Bethke Elshtain, Eldon Jay Epp, Peter C. Erb, Tassilo Erhardt, Maria Erling, Noel Leo Erskine, Gillian R. Evans, Virginia Fabella, Michael A. Fahey, Edward Farley, Margaret A. Farley, Wendy Farley, Robert Fastiggi, Seena Fazel, Duncan S. Ferguson, Helwar Figueroa, Paul Corby Finney, Kyriaki Karidoyanes FitzGerald, Thomas E. FitzGerald, John R. Fitzmier, Marie Therese Flanagan, Sabina Flanagan, Claude Flipo, Ronald B. Flowers, Carole Fontaine, David Ford, Mary Ford, Stephanie A. Ford, Jim Forest, William Franke, Robert M. Franklin, Ruth Franzén, Edward H. Friedman, Samuel Frouisou, Lorelei F. Fuchs, Jojo M. Fung, Inger Furseth, Richard R. Gaillardetz, Brandon Gallaher, China Galland, Mark Galli, Ismael García, Tharscisse Gatwa, Jean-Marie Gaudeul, Luis María Gavilanes del Castillo, Pavel L. Gavrilyuk, Volney P. Gay, Metropolitan Athanasios Geevargis, Kondothra M. George, Mary Gerhart, Simon Gikandi, Maurice Gilbert, Michael J. Gillgannon, Verónica Giménez Beliveau, Terryl Givens, Beth Glazier-McDonald, Philip Gleason, Menghun Goh, Brian Golding, Bishop Hilario M. Gomez, Michelle A. Gonzalez, Donald K. Gorrell, Roy Gottfried, Tamara Grdzelidze, Joel B. Green, Niels Henrik Gregersen, Cristina Grenholm, Herbert Griffiths, Eric W. Gritsch, Erich S. Gruen, Christoffer H. Grundmann, Paul H. Gundani, Jon P. Gunnemann, Petre Guran, Vidar L. Haanes, Jeremiah M. Hackett, Getatchew Haile, Douglas John Hall, Nicholas Hammond, Daphne Hampson, Jehu J. Hanciles, Barry Hankins, Jennifer Haraguchi, Stanley S. Harakas, Anthony John Harding, Conrad L. Harkins, J. William Harmless, Marjory Harper, Amir Harrak, Joel F. Harrington, Mark W. Harris, Susan Ashbrook Harvey, Van A. Harvey, R. Chris Hassel, Jione Havea, Daniel Hawk, Diana L. Hayes, Leslie Hayes, Priscilla Hayner, S. Mark Heim, Simo Heininen, Richard P. Heitzenrater, Eila Helander, David Hempton, Scott H. Hendrix, Jan-Olav Henriksen, Gina Hens-Piazza, Carter Heyward, Nicholas J. Higham, David Hilliard, Norman A. Hjelm, Peter C. Hodgson, Arthur Holder, M. Jan Holton, Dwight N. Hopkins, Ronnie Po-chia Hsia, Po-Ho Huang, James Hudnut-Beumler, Jennifer S. Hughes, Leonard M. Hummel, Mary E. Hunt, Laennec Hurbon, Mark Hutchinson, Susan E. Hylen, Mary Beth Ingham, H. Larry Ingle, Dale T. Irvin, Jon Isaak, Paul John Isaak, Ada María Isasi-Díaz, Hans Raun Iversen, Margaret C. Jacob, Arthur James, Maria Jansdotter-Samuelsson, David Jasper, Werner G. Jeanrond, Renée Jeffery, David Lyle Jeffrey, Theodore W. Jennings, David H. Jensen, Robin Margaret Jensen, David Jobling, Dale A. Johnson, Elizabeth A. Johnson, Maxwell E. Johnson, Sarah Johnson, Mark D. Johnston, F. Stanley Jones, James William Jones, John R. Jones, Alissa Jones Nelson, Inge Jonsson, Jan Joosten, Elizabeth Judd, Mulambya Peggy Kabonde, Robert Kaggwa, Sylvester Kahakwa, Isaac Kalimi, Ogbu U. Kalu, Eunice Kamaara, Wayne C. Kannaday, Musimbi Kanyoro, Veli-Matti Kärkkäinen, Frank Kaufmann, Léon Nguapitshi Kayongo, Richard Kearney, Alice A. Keefe, Ralph Keen, Catherine Keller, Anthony J. Kelly, Karen Kennelly, Kathi Lynn Kern, Fergus Kerr, Edward Kessler, George Kilcourse, Heup Young Kim, Kim Sung-Hae, Kim Yong-Bock, Kim Yung Suk, Richard King, Thomas M. King, Robert M. Kingdon, Ross Kinsler, Hans G. Kippenberg, Cheryl A. Kirk-Duggan, Clifton Kirkpatrick, Leonid Kishkovsky, Nadieszda Kizenko, Jeffrey Klaiber, Hans-Josef Klauck, Sidney Knight, Samuel Kobia, Robert Kolb, Karla Ann Koll, Heikki Kotila, Donald Kraybill, Philip D. W. Krey, Yves Krumenacker, Jeffrey Kah-Jin Kuan, Simanga R. Kumalo, Peter Kuzmic, Simon Shui-Man Kwan, Kwok Pui-lan, André LaCocque, Stephen E. Lahey, John Tsz Pang Lai, Emiel Lamberts, Armando Lampe, Craig Lampe, Beverly J. Lanzetta, Eve LaPlante, Lizette Larson-Miller, Ariel Bybee Laughton, Leonard Lawlor, Bentley Layton, Robin A. Leaver, Karen Lebacqz, Archie Chi Chung Lee, Marilyn J. Legge, Hervé LeGrand, D. L. LeMahieu, Raymond Lemieux, Bill J. Leonard, Ellen M. Leonard, Outi Leppä, Jean Lesaulnier, Nantawan Boonprasat Lewis, Henrietta Leyser, Alexei Lidov, Bernard Lightman, Paul Chang-Ha Lim, Carter Lindberg, Mark R. Lindsay, James R. Linville, James C. Livingston, Ann Loades, David Loades, Jean-Claude Loba-Mkole, Lo Lung Kwong, Wati Longchar, Eleazar López, David W. Lotz, Andrew Louth, Robin W. Lovin, William Luis, Frank D. Macchia, Diarmaid N. J. MacCulloch, Kirk R. MacGregor, Marjory A. MacLean, Donald MacLeod, Tomas S. Maddela, Inge Mager, Laurenti Magesa, David G. Maillu, Fortunato Mallimaci, Philip Mamalakis, Kä Mana, Ukachukwu Chris Manus, Herbert Robinson Marbury, Reuel Norman Marigza, Jacqueline Mariña, Antti Marjanen, Luiz C. L. Marques, Madipoane Masenya (ngwan'a Mphahlele), Caleb J. D. Maskell, Steve Mason, Thomas Massaro, Fernando Matamoros Ponce, András Máté-Tóth, Odair Pedroso Mateus, Dinis Matsolo, Fumitaka Matsuoka, John D'Arcy May, Yelena Mazour-Matusevich, Theodore Mbazumutima, John S. McClure, Christian McConnell, Lee Martin McDonald, Gary B. McGee, Thomas McGowan, Alister E. McGrath, Richard J. McGregor, John A. McGuckin, Maud Burnett McInerney, Elsie Anne McKee, Mary B. McKinley, James F. McMillan, Ernan McMullin, Kathleen E. McVey, M. Douglas Meeks, Monica Jyotsna Melanchthon, Ilie Melniciuc-Puica, Everett Mendoza, Raymond A. Mentzer, William W. Menzies, Ina Merdjanova, Franziska Metzger, Constant J. Mews, Marvin Meyer, Carol Meyers, Vasile Mihoc, Gunner Bjerg Mikkelsen, Maria Inêz de Castro Millen, Clyde Lee Miller, Bonnie J. Miller-McLemore, Alexander Mirkovic, Paul Misner, Nozomu Miyahira, R. W. L. Moberly, Gerald Moede, Aloo Osotsi Mojola, Sunanda Mongia, Rebeca Montemayor, James Moore, Roger E. Moore, Craig E. Morrison O.Carm, Jeffry H. Morrison, Keith Morrison, Wilson J. Moses, Tefetso Henry Mothibe, Mokgethi Motlhabi, Fulata Moyo, Henry Mugabe, Jesse Ndwiga Kanyua Mugambi, Peggy Mulambya-Kabonde, Robert Bruce Mullin, Pamela Mullins Reaves, Saskia Murk Jansen, Heleen L. Murre-Van den Berg, Augustine Musopole, Isaac M. T. Mwase, Philomena Mwaura, Cecilia Nahnfeldt, Anne Nasimiyu Wasike, Carmiña Navia Velasco, Thulani Ndlazi, Alexander Negrov, James B. Nelson, David G. Newcombe, Carol Newsom, Helen J. Nicholson, George W. E. Nickelsburg, Tatyana Nikolskaya, Damayanthi M. A. Niles, Bertil Nilsson, Nyambura Njoroge, Fidelis Nkomazana, Mary Beth Norton, Christian Nottmeier, Sonene Nyawo, Anthère Nzabatsinda, Edward T. Oakes, Gerald O'Collins, Daniel O'Connell, David W. Odell-Scott, Mercy Amba Oduyoye, Kathleen O'Grady, Oyeronke Olajubu, Thomas O'Loughlin, Dennis T. Olson, J. Steven O'Malley, Cephas N. Omenyo, Muriel Orevillo-Montenegro, César Augusto Ornellas Ramos, Agbonkhianmeghe E. Orobator, Kenan B. Osborne, Carolyn Osiek, Javier Otaola Montagne, Douglas F. Ottati, Anna May Say Pa, Irina Paert, Jerry G. Pankhurst, Aristotle Papanikolaou, Samuele F. Pardini, Stefano Parenti, Peter Paris, Sung Bae Park, Cristián G. Parker, Raquel Pastor, Joseph Pathrapankal, Daniel Patte, W. Brown Patterson, Clive Pearson, Keith F. Pecklers, Nancy Cardoso Pereira, David Horace Perkins, Pheme Perkins, Edward N. Peters, Rebecca Todd Peters, Bishop Yeznik Petrossian, Raymond Pfister, Peter C. Phan, Isabel Apawo Phiri, William S. F. Pickering, Derrick G. Pitard, William Elvis Plata, Zlatko Plese, John Plummer, James Newton Poling, Ronald Popivchak, Andrew Porter, Ute Possekel, James M. Powell, Enos Das Pradhan, Devadasan Premnath, Jaime Adrían Prieto Valladares, Anne Primavesi, Randall Prior, María Alicia Puente Lutteroth, Eduardo Guzmão Quadros, Albert Rabil, Laurent William Ramambason, Apolonio M. Ranche, Vololona Randriamanantena Andriamitandrina, Lawrence R. Rast, Paul L. Redditt, Adele Reinhartz, Rolf Rendtorff, Pål Repstad, James N. Rhodes, John K. Riches, Joerg Rieger, Sharon H. Ringe, Sandra Rios, Tyler Roberts, David M. Robinson, James M. Robinson, Joanne Maguire Robinson, Richard A. H. Robinson, Roy R. Robson, Jack B. Rogers, Maria Roginska, Sidney Rooy, Rev. Garnett Roper, Maria José Fontelas Rosado-Nunes, Andrew C. Ross, Stefan Rossbach, François Rossier, John D. Roth, John K. Roth, Phillip Rothwell, Richard E. Rubenstein, Rosemary Radford Ruether, Markku Ruotsila, John E. Rybolt, Risto Saarinen, John Saillant, Juan Sanchez, Wagner Lopes Sanchez, Hugo N. Santos, Gerhard Sauter, Gloria L. Schaab, Sandra M. Schneiders, Quentin J. Schultze, Fernando F. Segovia, Turid Karlsen Seim, Carsten Selch Jensen, Alan P. F. Sell, Frank C. Senn, Kent Davis Sensenig, Damían Setton, Bal Krishna Sharma, Carolyn J. Sharp, Thomas Sheehan, N. Gerald Shenk, Christian Sheppard, Charles Sherlock, Tabona Shoko, Walter B. Shurden, Marguerite Shuster, B. Mark Sietsema, Batara Sihombing, Neil Silberman, Clodomiro Siller, Samuel Silva-Gotay, Heikki Silvet, John K. Simmons, Hagith Sivan, James C. Skedros, Abraham Smith, Ashley A. Smith, Ted A. Smith, Daud Soesilo, Pia Søltoft, Choan-Seng (C. S.) Song, Kathryn Spink, Bryan Spinks, Eric O. Springsted, Nicolas Standaert, Brian Stanley, Glen H. Stassen, Karel Steenbrink, Stephen J. Stein, Andrea Sterk, Gregory E. Sterling, Columba Stewart, Jacques Stewart, Robert B. Stewart, Cynthia Stokes Brown, Ken Stone, Anne Stott, Elizabeth Stuart, Monya Stubbs, Marjorie Hewitt Suchocki, David Kwang-sun Suh, Scott W. Sunquist, Keith Suter, Douglas Sweeney, Charles H. Talbert, Shawqi N. Talia, Elsa Tamez, Joseph B. Tamney, Jonathan Y. Tan, Yak-Hwee Tan, Kathryn Tanner, Feiya Tao, Elizabeth S. Tapia, Aquiline Tarimo, Claire Taylor, Mark Lewis Taylor, Bishop Abba Samuel Wolde Tekestebirhan, Eugene TeSelle, M. Thomas Thangaraj, David R. Thomas, Andrew Thornley, Scott Thumma, Marcelo Timotheo da Costa, George E. “Tink” Tinker, Ola Tjørhom, Karen Jo Torjesen, Iain R. Torrance, Fernando Torres-Londoño, Archbishop Demetrios [Trakatellis], Marit Trelstad, Christine Trevett, Phyllis Trible, Johannes Tromp, Paul Turner, Robert G. Tuttle, Archbishop Desmond Tutu, Peter Tyler, Anders Tyrberg, Justin Ukpong, Javier Ulloa, Camillus Umoh, Kristi Upson-Saia, Martina Urban, Monica Uribe, Elochukwu Eugene Uzukwu, Richard Vaggione, Gabriel Vahanian, Paul Valliere, T. J. Van Bavel, Steven Vanderputten, Peter Van der Veer, Huub Van de Sandt, Louis Van Tongeren, Luke A. Veronis, Noel Villalba, Ramón Vinke, Tim Vivian, David Voas, Elena Volkova, Katharina von Kellenbach, Elina Vuola, Timothy Wadkins, Elaine M. Wainwright, Randi Jones Walker, Dewey D. Wallace, Jerry Walls, Michael J. Walsh, Philip Walters, Janet Walton, Jonathan L. Walton, Wang Xiaochao, Patricia A. Ward, David Harrington Watt, Herold D. Weiss, Laurence L. Welborn, Sharon D. Welch, Timothy Wengert, Traci C. West, Merold Westphal, David Wetherell, Barbara Wheeler, Carolinne White, Jean-Paul Wiest, Frans Wijsen, Terry L. Wilder, Felix Wilfred, Rebecca Wilkin, Daniel H. Williams, D. Newell Williams, Michael A. Williams, Vincent L. Wimbush, Gabriele Winkler, Anders Winroth, Lauri Emílio Wirth, James A. Wiseman, Ebba Witt-Brattström, Teofil Wojciechowski, John Wolffe, Kenman L. Wong, Wong Wai Ching, Linda Woodhead, Wendy M. Wright, Rose Wu, Keith E. Yandell, Gale A. Yee, Viktor Yelensky, Yeo Khiok-Khng, Gustav K. K. Yeung, Angela Yiu, Amos Yong, Yong Ting Jin, You Bin, Youhanna Nessim Youssef, Eliana Yunes, Robert Michael Zaller, Valarie H. Ziegler, Barbara Brown Zikmund, Joyce Ann Zimmerman, Aurora Zlotnik, Zhuo Xinping
- Edited by Daniel Patte, Vanderbilt University, Tennessee
-
- Book:
- The Cambridge Dictionary of Christianity
- Published online:
- 05 August 2012
- Print publication:
- 20 September 2010, pp xi-xliv
-
- Chapter
- Export citation
TEST-INFECTED: PROGRAMMERS LOVE WRITING TESTS
-
- By Kent Beck, Erich Gamma
- Edited by Dwight Deugo, Carleton University, Ottawa
-
- Book:
- More Java Gems
- Published online:
- 06 July 2010
- Print publication:
- 28 January 2000, pp 357-376
-
- Chapter
- Export citation
-
Summary
Testing is not closely integrated with development. This prevents you from measuring the progress of development—you can't tell when something starts working or when something stops working. Using JUnit you can cheaply and incrementally build a test suite that will help you measure your progress, spot unintended side effects, and focus your development efforts.
THE PROBLEM
Every programmer knows they should write tests for their code. Few do. The universal response to “Why not?” is “I'm in too much of a hurry.” This quickly becomes a vicious cycle—the more pressure you feel, the fewer tests you write. The fewer tests you write, the less productive you are and the less stable your code becomes. The less productive and accurate you are, the more pressure you feel.
Programmers burn out from just such cycles. Breaking out requires an outside influence. We found the outside influence we needed in a simple testing framework that lets us do a little testing that makes a big difference.
The best way to convince you of the value of writing your own tests would be to sit down with you and do a bit of development. Along the way, we would encounter new bugs, catch them with tests, fix them, have them come back, fix them again, and so on. You would see the value of the immediate feedback you get from writing and saving and rerunning your own unit tests.
16 - TO ACCESSOR OR NOT TO ACCESSOR
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 175-180
-
- Chapter
- Export citation
-
Summary
Why do I keep doing this? I keep bringing up the “should all variables be accessed through methods” debate whenever I see people taking a dogmatic position, that is, one that they don't explain. It wasn't until I rewrote the whole thing as patterns for the book that I realized the key issue here is communication.
I'm a little disappointed reading this now that I didn't try to write Direct Access and Indirect Access as patterns. That would have made the reasoning behind the options much more obvious. I guess I just wasn't ready to use patterns to address such fundamental questions. Now I don't even hesitate- I'm so pattern soaked now I can't help it.
Anyway, if this one bugs you, ignore it, all except the part about making accessors private by default.
A debate has been raging on both CompuServe and the Internet lately about the use and abuse of accessing methods for getting and setting the values of instance variables. Since this is the closest thing I've seen to a religious war in a while, I thought I'd weigh in, not with the definitive answer, but with at least a summary of the issues and arguments on both sides. As with most, uh, “discussions” generating lots of heat, the position anyone takes has more to do with attitude and experience than with objective truth.
26 - WHERE DO OBJECTS COME FROM? FROM VARIABLES AND METHODS
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 239-244
-
- Chapter
- Export citation
-
Summary
More thinking about design/modeling. This one covers my pet peeve-people who use fixed-sized collections with meaningful indexes (e.g. “1 is red, 2 is blue, 3 is green”). In my patterns book, I covered this in some detail when I talk about your program talking to you. Darn it, if red, green, and blue go together, then make an object for them, figure out what it should be called, and figure out what it should do. If you don't create the easy objects, how will you ever be able to see to create the hard ones?
Let's see if I can get through this third column on how objects are born without blushing. So far we've seen two patterns: “Objects from States” and “Objects from Collections.” This time we'll look at two more sources of objects: “Objects from Variables” and “Objects from Methods.” All four patterns have one thing in common—they create objects that would be difficult or impossible to invent before you have a running program.
These patterns are part of the reason I am suspicious of any methodology that smacks of the sequence, “design, then program.” The objects that shape the way I think about my programs almost always come out of the program, not out of my preconceptions. Thinking “the design phase is over, now I just have to push on and finish the implementation” is a sure way to miss these valuable objects and end up with a poorly structured, inflexible application to boot.
6 - WHY STUDY SMALLTALK IDIOMS?
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 73-80
-
- Chapter
- Export citation
-
Summary
This was my first column in The Smalltalk Report.
The Smalltalk Report occupies an important position in legitimizing Smalltalk. While it has in the past seemed the ugly stepchild of the SIGS family, the mere fact of its existence has gone far towards convincing reluctant decision makers that Smalltalk is worth betting on
When I started writing for The Smalltalk Report, I had already made something of a name for myself in the Smalltalk world. The CRC paper was out and making its splash, I had been working on Smalltalk in various guises for eight years, and I was well into my tenure at MasPar.
My life in a startup cloister was a big part of my decision to begin writing the column. Startups are great fun, but you don't join one to see the world and become famous (if you're not in sales, anyway). Writing the column kept me in touch with my friends.
In the end, the benefits of writing the column were much greater than I had imagined, as were the pains. It always seemed that the next deadline hit just after I'd finished the last column. Dragging fingers to keyboard when a paying customer was already waiting for code was tough. However, I got much more from the column than I put into it. First, I learned to write. You will see a distinct change in my writing style from the first columns to the last.
PREFACE
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp xiii-xiv
-
- Chapter
- Export citation
-
Summary
“I'm not dead yet.” That's what I thought when Don Jackson at SIGS offered to put my articles together into a book. It's probably that every book I've ever seen with “Complete” or “Collected” in the title is no longer with us. Last I checked, I'm still here.
Having established that I am alive enough to be typing this, let's get to the point of the Preface—convincing you to buy this book. You are standing here trying to decide whether to spend your hard-earned dinero for that exquisite literature you saw with the swords and dragons and stuff on the cover or a collection of my articles. Here's my pitch—my entire career has been spent learning how to communicate with other people about programs. This book chronicles how I learned what I know and how I learned to tell people stories about it.
I just finished my first book, The Smalltalk Best Practice Patterns. It is easy to see how a book written end to end can have a single theme. This book has no such theme. It has a story—no, two stories.
The first story could be called “Kent Discovers the Importance of People.” I got into computing to avoid having to deal with people. As a sophomore in high school, I took physics instead of biology so I wouldn't have to try to understand “all that squishy stuff.” The rest of my academic career was spent in search of deeper understanding of the mechanics of things, whether the topic was computing or music.
23 - WHERE DO OBJECTS COME FROM?
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 219-224
-
- Chapter
- Export citation
-
Summary
The previous column got me started examining why people create classes. About this time, I had collected enough patterns to begin thinking about the patterns book. Of course, at first I was going to cover all of programming/analysis/design/project management/etc. in a single book. This exploration was the beginning of trying to write the analysis/design portion of the book.
One of the things I like about writing a column is that it forces you to think hard about a topic at regular intervals. I'm the kind of person who dives deep into a topic until I'm bored, and then drifts until something else catches my eye. I get to study lots of cool stuff that way, but I don't really penetrate to insight. Writing a column returns me to roughly the same place every month and pushes me to find something new. The result is much more valuable thinking.
Previously, I talked about how objects could be created from the states of objects that acted like finite-state machines (the “Objects from States” pattern). I'll continue on the theme of where objects come from for this and several issues.
I won't be saying much about the conventional source of objects, the user's world. There are lots of books that will tell you how to find those objects. Instead, I'll focus on finding new objects in running programs.
18 - INHERITANCE: THE REST OF THE STORY (CONT.)
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 189-194
-
- Chapter
- Export citation
-
Summary
I think this was originally titled “Inheritance: The Rest of the Rest of the Story,” but it got edited. Oh well.
The pattern presented here is another in the “Transformation Series.” It recommends letting inheritance evolve from the need to reduce code duplication.
In the June issue, where I took on accessor methods, I stated that there was no such thing as a truly private message. I got a message from Nikolas Boyd reminding me that he had written an earlier article describing exactly how to implement really truly private methods. One response I made was that until all the vendors ship systems that provide method privacy, Smalltalk cannot be said to have it. Another is that I'm not sure I'd use it even if I had it. It seems like some of my best “reuse moments” occur when I find a supposedly private method in a server that does exactly what I want. I don't yet have the wisdom to separate public from private with any certainty.
On a different note, I've been thinking about the importance of bad style. In this column, I always try to focus on good style, but in my programming there are at least two phases of project development where maintaining the best possible style is the farthest thing from my mind. When I am trying to get some code up and running I often deliberately ignore good style, figuring that as soon as I have everything running I can simply apply my patterns to the code to get well-structured code that does the same thing.
25 - DISTRIBUTED SMALLTALK
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 235-238
-
- Chapter
- Export citation
-
Summary
Yet another brutal review. I never write a tough review without questioning myself: “Is it just me? Am I just not smart enough to get this product? Who am I to tell someone else what to do?”
I am just now getting comfortable with writing what I know and trusting my readers to take what I say and add their perspective and experience to it.
Should you be using Distributed Smalltalk? That is the question I'll address here. This isn't a full-blown product review, nor a technical piece. I'll introduce the history and technical background of Distributed Smalltalk as they apply to the question of who should be using it.
First, what is Distributed Smalltalk? It is a Common Object Request Broker Architecture (CORBA)-compliant extension to ParcPlace System's Visual-Works developed and marketed by Hewlett-Packard. “HP? The hardware company? Those C++ guys?”
My first reaction when I saw that HP had done a Smalltalk product was, “What does HP know about Smalltalk?” The answer to this question is twofold. One answer is “a lot.” HP has been involved peripherally in Smalltalk since it first escaped Xerox. They were one of the first four companies to write a virtual machine. They have also had pockets of interest in Smalltalk ever since. Their 700 series of workstations has held the title for fastest Smalltalk for several years.
15 - INSTANCE-SPECIFIC BEHAVIOR: DIGITALK IMPLEMENTATION AND THE DEEPER MEANING OF IT ALL
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 167-174
-
- Chapter
- Export citation
-
Summary
Well, at least I didn't just present instance-specific behavior as a pointy-hat technique. I tried to extract some cultural lessons from it. Now that the Smalltalk world has contracted to a couple of big players, there isn't enough cultural diversity left to analyze. Ah, the olden days, back when we used to have to walk miles barefoot in the snow to get coal to shovel into our Smalltalk machines… Now I sound like an old fart
In the last issue, I wrote about what instance-specific behavior is, why you would choose to use it, and how you implement it in Smalltalk-80 …er…Objectworks\Smalltalk (which way does the slash go, anyhow?) …er… VisualWorks (is that a capital W or not?). This month's column offers the promised Digitalk Smalltalk/V OS/2 2.0 implementation (thanks to Mike Anderson for the behind-the-scenes info) and a brief discussion of what the implementations reveal about the two engineering organizations.
I say “brief discussion” because as I got to digging around I found many columns' worth of material there for the plucking. I'll cover only issues raised by the implementation of classes and method look-up. Future columns will contrast the styles as they apply to operating system access, user interface frameworks, and other topics.
28 - USING PATTERNS: DESIGN
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 249-256
-
- Chapter
- Export citation
-
Summary
Just when I write something that is too short, I write some that is too long. I was really in the groove of writing columns by this time, and I'd wait until the last minute. Sometimes, as in the previous column, this left me a little short. Sometimes as in this column, I ended up starting something I couldn't finish.
This column points to one of my weaknesses as a writer—I don't turn to pictures nearly soon enough. The material covered here would make much more sense with a few well-chosen pictures. If you get bogged down, try drawing the pictures yourself. That's what I do, even if I don't often publish them.
I kind of ran out of steam towards the end of that last series on creating new objects. I think the message that many of the most important objects are not the ones you find by underlining nouns in problem statements is still valid. The objects that emerge (if you're watching for them) late in the game, during what is typically thought of as maintenance, can profoundly affect how you as a programmer view the system. By the time I got to the fourth part, though, I was tired of the topic. Those last couple of patterns still deserve some reexamination in the future.
Kent Beck's Guide to Better Smalltalk
- A Sorted Collection
- Kent Beck
-
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997
-
Over the last ten years Kent Beck has written dozens of technical papers for the Smalltalk community, earning himself a reputation as both a gifted writer and thinker. Kent Beck's Guide to Better Smalltalk, is a collection of his best work from Object Magazine, The Smalltalk Report, Dr Dobbs Journal, and more. Each article has a new introduction that takes a retrospective view of the writing. Topics include: idioms and environments; methods and metamodels; architecture and pattern languages, objects, classes, inheritance, and all things Smalltalk. Nowhere else can one obtain such a complete collection of Beck's writing. While demonstrating the elegance of Smalltalk and how some of its most powerful features can be exploited profitably, this collection also illuminates breakthrough concepts in object-oriented development. This book is for Smalltalk programmers and anyone working in object-oriented software development.
31 - ARCHITECTURAL PROTOTYPE: TELEVISION REMOTE CONTROL
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 289-298
-
- Chapter
- Export citation
-
Summary
Oooooh, my first process pattern. All of the patterns I had written to date talked about programming things. This column introduced the first pattern that talks explicitly about people activities.
Jim Coplien was one of the first people to start writing lots of good patterns. Even though he is a good programmer, he chose to write his patterns out of his experience analyzing software development organizations. I was skeptical at first—what do these patterns of how people behave have to do with programming? It was around the time of this article that I began to realize that his perspective was as important as mine. It doesn't matter how good a job you do if you're doing the wrong job.
To make up for all the icky squishy stuff, I made sure I included plenty of code in the column. As aggressive as I think I am, looking at these columns reminds me that I go in the water half a toe at a time.
Now, where was I? Oh, yes. Last issue I talked about my philosophy of testing and presented a framework that supported writing unit and integration tests. But before that, I was talking about how to use patterns. I have spent a couple of issues designing the software to run a television and remote control, using patterns to guide every design decision.
14 - INSTANCE-SPECIFIC BEHAVIOR: HOW AND WHY
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 157-166
-
- Chapter
- Export citation
-
Summary
After the brief pause in the previous column to discuss philosophy, this column descends again into the depths of techno-minutiae. At least I talked about why you'd want to use instance-specific behavior, and didn't just present it as:“Here's a cool thing you can do with Smalltalk.”
The pattern Scriptable Objects still looks pretty good to me. In fact, I like it better as a pattern than many of the patterns that follow.
This and the next column will discuss technical and philosophical matters. The technical material covers implementing and using instance-specific behavior, the idea that you can attach methods to individual instances rather than to a class. You might use it in animation or in building a Hypercard-like system. It is not a new idea. Lisp-based object systems have had it for years, and languages like Self rely on it exclusively. It is not well known in the Smalltalk community, though, and deserves a place in the mature Smalltalker's bag of tricks.
The philosophical material illuminates the differences between Digitalk's and ParcPlace's view of good Smalltalk style. ParcPlace grew out of a research atmosphere where truth and beauty were admired. Although established in business now, ParcPlace continues to favor elegant solutions. Digitalk has always been driven by the desire to build commercial software and has often been staffed with engineers whose experience comes from other languages. Digitalk's solutions tend to be more pragmatic and the workings easier to follow operationally, even if they don't have the most elegant high-level models.
13 - WHOLE LOTTA SMALLTALK: THE TECHNOLOGY
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 145-156
-
- Chapter
- Export citation
-
Summary
You can't write a review without breaking some eggs. That was my conclusion after writing this article. I pretty much trashed the Enfin product as it stood, backed by my review research and a nasty experience at a potentially big client.
I was worried what my friends at Enfin would say after this came out. I was pleasantly surprised to find them supportive— “We know we have these problems. Let us show you how we are addressing them.”
I learned that readers appreciate it when you speak your mind plainly, but you'd better have some numbers to back up your opinions.
A funny thing happened on the way to objects. There was this C++ juggernaut that was supposed to trample all in its path. I can remember hearing all the talk at OOPSLA '86 in Portland about how C++ was the language for objects. “Too much momentum.” “Too many C programmers.” “The alternatives are too flaky.” Everything else was going to be trampled. Period. In spite of this, a thriving market has grown around Smalltalk, the granddadly of pure object languages. It may be a fraction of the C++ market, but it is currently the scene of enormous technical and business energy. I make my living with Smalltalk, so my opinions on the matter are suspect, but I'll present the facts of the products in the market and let you draw your own conclusions.
32 - DEMAND LOADING FOR VISUALWORKS
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 299-310
-
- Chapter
- Export citation
-
Summary
This was about where I started losing interest in writing the column. I had written this nice bit of code for a client, and I ran into a publishing deadline, so I turned it into a literate program and sent it off.
You'll notice that there are eight more columns after this one. Once again, my reluctance to change shows through. My lesson: once you decide not to do something, do not pass go, do not collect $200 (yep, that's the going rate). Quit and get on with something else.
In my case, I was distracted by trying to keep my business going (which in itself was too big a job for one person) and trying to get my patterns book done.
Not that this is a terrible column, or that it gives bad advice. The technique is useful, and belongs in every wizard's black bag. When I don't feel like writing the column, though, I shouldn't write the column.
Before I jump into this month's column, I'd like to tell you a little about what I learned at Digitalk's DevCon this year.
RANT
One thing I learned is that Digitalk is finally coming around to the idea that third-party support is important to their success. The slow growth of the third-party parts market has hurt them, I think, and they want to fix that. Their Partners Program, the third-party catalog to be shipped with their product, and their public and private statements at DevCon give me hope that they are coming around.
39 - VARIABLES OF THE WORLD
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 371-378
-
- Chapter
- Export citation
-
Summary
This column takes a little bit bigger chance. I never worked out the instance variable taxonomy to the degree I did with temps, but I went ahead and published what I had anyway (as a column, it's not in the book), because I thought it was interesting and potentially useful. Looking at it now, I can't see how terribly useful it is. Sigh. Anyway, I was about to quit as columnist, and this and the previous column were just about rock bottom.
In the last issue, I presented the four ways temporary variables are commonly used. This time, I'll talk about how instance variables are used. The results for instance variables are nowhere near as tidy as those for temps. I'll speculate as to why after I've presented the information.
SOAPBOX
But first, I'd like to whine and complain a little. Here's the essence of my beef—it's getting harder, not easier, to write Smalltalk applications. This is not what I expected. Smalltalk had already raised the level of programming so much from what I was used to that I figured the trend would continue. Today's clichés would become tomorrow's abstractions and the day after that we would forget we ever had to program that stuff. Onward and upward.
22 - DEATH TO CASE STATEMENTS
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 213-218
-
- Chapter
- Export citation
-
Summary
There are two notable points to make about this paper. First, it is one of the first times Ward and I published any pattern-related material (we presented some stuff at OOPSLA 87 in Orlando, I in Norm Kerth's “Where Do Objects Come From” workshop, Ward on a panel). Second, it argues that the worst problem of reuse is one of communication, not technology or economics.
The paper started out life as a Tektronix technical report. Ward and I had the habit of writing up just about everything we did as a TR. After we had written this, I think we submitted it as a position paper for some conference or workshop. Somehow, JOOP got hold of a copy and contacted us about publishing it.
The paper can be summed up as: “We created two sets of abstractions. The first was communicated as literate source code. The second was communicated as patterns for its reuse. The first set of objects was misused; the second was used correctly. We conclude that the problem of reuse is one of effectively communicating the intent of the code.”
Hold on a sec.…
Before I finish bashing case statements, I'd like to return to the scene of an earlier crime, my perfidious assault on that bastion of Smalltalk orthodoxy, the ubiquitous accessor method. (Whew! That's a tenbuck sentence if I ever seen one.) I argued that the violation of encapsulation provided by accessor methods more than offset any benefit of inheritance reuse.
19 - HELPER METHODS AVOID UNWANTED INHERITANCE
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 195-200
-
- Chapter
- Export citation
-
Summary
This column is really just an application of Composed Method to deal with inheritance. Now I always try to make my code fragments be real code, no As, Bs, and Cs. You can see why from the example here that is written the other way.
The column is interesting in that it contains some of the first explicit links between patterns. Down at the end it says, “Use Composed Method if necessary to set this pattern up.” I paid considerably more attention to pattern linking when I wrote the pattern book, and I'll probably pay a lot more attention with my next set of patterns.
Patterns in isolation are all very interesting, but it is when they are linked together that they become powerful. It is only then that you can explain a simple solution to a problem, because you know that the rest of the solution was handled by previous patterns or will be handled by future patterns.
The topic of this issue's column on Smalltalk idioms, following the general theme of inheritance, is how to manage the use of super. Several issues back I wrote a column entitled “The Dreaded Super,” in which I catalogued all the legitimate (and otherwise) uses of super in the existing Smalltalk/V and VisualWorks images. I'm still very proud of that column, but a couple of days ago I discovered I had left out one very important technique in dealing with super.
17 - INHERITANCE: THE REST OF THE STORY
- Kent Beck, First Class Software, Inc.
-
- Book:
- Kent Beck's Guide to Better Smalltalk
- Published online:
- 04 August 2010
- Print publication:
- 01 January 1997, pp 181-188
-
- Chapter
- Export citation
-
Summary
As if one crusade wasn't enough, I had to take on the sacred cow of inheritance as well. This must have been my “caped crusader” phase. I still think inheritance is overrated, but I don't generally get in anyone's face about it anymore. Too many windmills under the bridge, I guess. There I go, sounding old and worn out again.
I like the way the pattern form makes concrete and clear the technique of separating state-related and service-related code. The how of it is clear, as is the why.
This is one of many attempts I have made to explain the pattern I now call Composed Method. I must have written this pattern six or eight times. Persistence (my wife calls it “stubbornness” for some reason) can make up for lack of raw talent.
The two patterns here are written as transformations and named as a transformation—you have a method and you split it apart or you have a class and you split it apart. I was very big on “patterns as transformations” for a while. All the patterns in the pattern book are written differently—as descriptions of the things created, not the process of creating them.
Of the three tenets of objects—encapsulation, polymorphism, and inheritance—inheritance generates by far the most controversy. Is it for categorizing analysis objects? Is it for defining common protocols (sets of messages)? Is it for sharing implementation? Is it really the computed goto of the nineties?